-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[v626][RF] Backports of RooFit PRs to v6-26-00-patches
: Part 3
#9710
[v626][RF] Backports of RooFit PRs to v6-26-00-patches
: Part 3
#9710
Conversation
Fix the following compilation error on Windows: ``` testHistFactory.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl RooFit::tmpPath(void)" (?tmpPath@RooFit@@YAAEBV?$basic_string@DU?$char_traits@D@std@@v$allocator@D@2@@std@@xz) referenced in function "public: virtual void __cdecl HFFixture_ModelProperties_Test::TestBody(void)" (?TestBody@HFFixture_ModelProperties_Test@@UEAAXXZ) testHistFactory.exe : fatal error LNK1120: 1 unresolved externals ```
The first implementation of RooFitH3 had a number of shortcomings, which this PR addresses. In detail: * It is now possible to read JSON files independent of the ordering * A priority mechanism has been implemented for importers and exporters * Duplicate and dead code has been removed * Many small bugs have been fixed * The JSONInterface has been made public and moved from Detail to Experimental, so users can write their own importers & exporters * The two unit tests have been fixed Co-authored-by: Nicolas Morange <nicolas.morange@cern.ch> Co-authored-by: Jonas Rembser <jonas.rembser@cern.ch>
The usecase for this overload is to transfer the ownership of RooAbsArgs from `std::unique_ptr` to another RooAbsArg, without having to call `release()` on the smart pointer, which is a code smell because ownership should always be clear without the smart pointer having to release it.
Calling `new` and `delete` is now completely avoided in RooFitHS3, and `std::unique_ptr` is always used instead.
Unlike instance methods, a `property` object in Python 2 has no `__func__` attribute and can be reassigned to a new class directly.
* Add two tutorials `rf711_lagrangianmorph` and `rf712_lagrangianmorphfit` to demonstrate the usage of the `RooLagrangianMorphFunc` class * The commit also includes an update to `rf512_wsfactory_oper` showing an example for the new options of `taylorexpand` and `lagrangianmorph` * formatting of `tutorials/roofit/rf710_roopoly.py` * The attribute for new physics couplings in the `RooLagrangianMorphFunc` class is changed from `NP` to `NewPhysics` to avoid confusion with other abbreviations * The `lagrangianmorph` factory interface is update to accept arguments in any order
Starting build on |
v6-26-00-patches
: Part 2v6-26-00-patches
: Part 3
This is presumbaly a bit controversial. safeDeleteList remove elements in order in a RooAbsCollection, starting with the ones that only have clients and no servers. This is a slow process, and takes 25% of CPU time on large workspace manipulation workflows, as it takes place at each workspace::import call. It can also lead to slow ~RooWorkspace. The point is, I don't think this logic is needed at all. ~RooAbsArg takes care of properly breaking all the client-server links, both uplinks and downlinks, for every object. I couldn't find a logical case where a crash would occur if the safeDeleteList logic were to be removed. All RooFit tests pass after this patch. No problem for my heavy workspace manipulation worflows either.
[RF] Include RooAbsData objects in the RooNameReg The logic from RooAbsArg is copied into RooAbsData. This allows to use the hash-map functionality of RooLinkedList for RooAbsData objects, as the namePtr mechanism allows to track renaming and therefore avoids false negatives that result in linear scans of the collection. In turn, this improves significantly the run-time of large workspace imports (x2 to x4), which were dominated by embeddedData() calls. This patch is based on the JSON tool use-case, but presumably will significantly also improve other heavy uses of workspace import, such as Higgs combination workspaces manipulation workflows. The cost of one additional pointer per RooAbsData object seems a low price to pay.
Starting build on |
Build failed on mac1015/python3. Errors:
|
Build failed on windows10/cxx14. Errors:
|
Build failed on mac11/cxx17. Errors:
|
Build failed on ROOT-ubuntu2004/soversion. Errors:
|
This is a backport of all the RooFit PRs that were merged to
master
in the last week tov6-26-00-patches
(if the right order, to not have the commit history diverge too much).